Intelligent electronic devices (“IED's”) such as programmable logic controllers (“PLC's”), Remote Terminal Units (“RTU's”), electric/watt hour meters, protection relays and fault recorders are widely available that make use of memory and microprocessors to provide increased versatility and additional functionality. Such functionality includes the ability to communicate with remote computing systems, either via a direct connection, e.g. modem, or via a network. These devices often include firmware or operating software/programs which is built or programmed into the device and which directs the microprocessor and other hardware to perform the desired functions of the IED.
The capability to upgrade the firmware of an IED is a desirable feature due to the fact that firmware is often being continually refined by the original manufacturer even after the product has been sold. Updates may be desirable to add or remove functions, or fix problems with the existing firmware. Often, the device is installed in a place that is difficult to access, so it is desirable to be able to upgrade the device remotely from a computer or other computing device by transferring the new firmware code via a communications link, such as an Ethernet, RS-485, RS-232, modem, or other form of wired or wireless link.
However, these communications links typically have a limited amount of available bandwidth. Therefore, if the device is complex and the firmware it uses is large, it may take a significant amount of time to transfer the upgraded firmware to the device. This is particularly undesirable when there is a usage charge for the communications link (such as long distance telephone charges) or the user has a large number of similar devices to upgrade. Further, where the communications link is unreliable, longer transmission times provide more opportunity for errors to be introduced into the transmission or for the transmission to be interrupted. In addition for some devices, the device is typically unavailable for normal operation during upgrade, therefore a shorter upgrade time is desirable to prevent unnecessary device downtime.
In addition, it is common for firmware on a device to be stored in non-volatile storage (such as a Flash EEPROM or hard disk drive), but transferred to a faster type of memory (typically a volatile memory such as DRAM) for execution. Therefore, the larger the firmware, the more non-volatile storage is required. Typically, the amount of non-volatile storage required is determined during the design of the device. While the designer may attempt to predict future needs, they must balance future upgrade capability against present costs. If it is desired to add to or otherwise modify the firmware later on such that the upgraded firmware is larger than the non-volatile storage can store, it may not be possible to upgrade the device.
Firmware within an electronic device often consists of a boot portion stored in a boot sector of a flash EEPROM, or other non-volatile device, and a main portion stored in the remainder of the flash EEPROM. The boot portion is typically used to start-up and/or initialize the device upon application of operating power and load and cause execution of the remaining firmware. It is often undesirable to upgrade the boot portion since if there is a failure (such as a power outage or code bug) when the boot portion upgrade is in progress, the device may be rendered inoperable.
In one known system, the upgraded firmware is transmitted to the device in a compressed form. The device then decompresses the upgraded firmware using a built in decompression routine or dedicated decompression hardware. However, this requires that the device be capable of decompressing the compressed upgrade firmware data. For devices already installed in the field, this would require that the device be retrofitted to add the decompression routine. Requiring this type of retrofitting would be disadvantageous.
Accordingly, is it an object of the present invention to provide a system that overcomes the disadvantages of the prior art by providing a faster method of upgrading the firmware in an electronic device while reducing its storage requirements. Further, it is another object of the invention to maintain backwards compatibility with existing installed devices without requiring prior modification to utilize the disclosed upgrade method.